﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

using Enterprise.Model.Role;
using Enterprise.Service.Role;
namespace Enterprise.Test
{
    /// <summary>
    /// TRoleService 的摘要说明
    /// </summary>
    [TestClass]
    public class TRoleService
    {
        public TRoleService()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        //
        // 编写测试时，可以使用以下附加特性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // 在运行每个测试之前，使用 TestInitialize 来运行代码
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // 在每个测试运行完之后，使用 TestCleanup 来运行代码
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        /// <summary>
        /// 角色添加方法测试
        /// </summary>
        [TestMethod]
        public void TestRoleInsert()
        {
            RoleEntity entity = new RoleEntity();
            entity.RNAME = "角色测试" + Guid.NewGuid().ToString().Substring(0, 5);
            entity.RTYPE = "";
            entity.RREMARK = "角色测试备注说明";
            entity.DB_Option_Action = "Insert";
            RoleService ser=new RoleService();
            ser.RoleExecute(entity);

            var q = ser.RoleList().Where(p => p.RNAME == entity.RNAME).FirstOrDefault();
            Assert.AreEqual(entity.RNAME, q.RNAME);
        }

        /// <summary>
        /// 角色更新方法测试
        /// </summary>
        [TestMethod]
        public void TestRoleUpdate()
        {
            RoleService ser = new RoleService();
            var entity = ser.RoleList().FirstOrDefault();
            if (entity != null)
            {                
                string s=Guid.NewGuid().ToString().Substring(0, 5);
                entity.RNAME = entity.RNAME + s;
                entity.RTYPE = "";
                entity.RREMARK = "角色测试备注说明" + s;
                entity.DB_Option_Action = "Update";
                ser.RoleExecute(entity);

                var q = ser.RoleList().Where(p => p.RNAME == entity.RNAME).FirstOrDefault();
                Assert.AreEqual(entity.RNAME, q.RNAME);
            }
        }

        /// <summary>
        /// 角色删除方法测试
        /// </summary>
        [TestMethod]
        public void TestRoleDelete()
        {
            RoleService ser = new RoleService();
            var entity = ser.RoleList().FirstOrDefault();
            if (entity != null)
            {
                entity.DB_Option_Action = "Delete";
                ser.RoleExecute(entity);
                bool rbool = false;
                var q = ser.RoleList().Where(p => p.RNAME == entity.RNAME).FirstOrDefault();
                if (q != null)
                {
                    rbool = true;
                }
                Assert.AreEqual(false, rbool);
            }
        }

    }
}
